What is a Closure in Functional Programming and Its Relation to Currying